#include <SPI.h>
#include <WiFi.h>

char ssid[] = "SSID_site";  
char pass[] = "heslo_site";    

int status = WL_IDLE_STATUS;
WiFiServer server(80);

void setup() {
    Serial.begin(9600);  
    pinMode(9, OUTPUT);  

    if (WiFi.status() == WL_NO_SHIELD) {
        Serial.println("Shield nepripojen"); 
        while(true); 
    } 

    while ( status != WL_CONNECTED) { 
        Serial.print("Pripojuji k SSID: ");
        Serial.println(ssid);

        status = WiFi.begin(ssid, pass);
        delay(10000);
    } 
    server.begin();    
    printWifiStatus();    
}
void loop() {
	//ceka na pripojeni klienta
    WiFiClient client = server.available(); 

    if(client){  //kdyz naleznem klienta
        String currentLine = "";         
        while (client.connected()){       
            if (client.available()){    
                char c = client.read();        
                Serial.write(c);     
				//pokud najde znak zalomeni radku (ukoncuje request od klienta)
                if (c == 'n'){                 
                    if (currentLine.length() == 0) {   
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-type:text/html");
                        client.println();             
						//hlavicka je oddelena znakem noveho radku 
  
                        //zde zacina HTML kod stranky
                        client.print("<a href=\"/H\">ZAPNI</a><br>");
                        client.print("<a href=\"/L\">VYPNI</a><br>");
                        client.println(); //dalsim prazdnym radkem konci HTML cast
                        break;         
                    } 
                    else{
                        currentLine = "";
                    }
                }     
		else if (c != 'r') {    
		    currentLine += c;
		}

		//kontroluje, jestli request konci na H, nebo L
		if (currentLine.endsWith("GET /H")) {
		    digitalWrite(9, HIGH);            //zapne LED
		}
		if (currentLine.endsWith("GET /L")) {
		    digitalWrite(9, LOW);             //vypne LED
		}
	    }
	}
        client.stop();
        Serial.println("client disonnected");
    }
}

void printWifiStatus() {
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
  
  Serial.print("http://");
  Serial.println(ip);
}